//
//  Status.swift
//  Weibo
//
//  Created by 张小东 on 16/1/17.
//  Copyright © 2016年 Mr.Zhang. All rights reserved.
//

import UIKit

class Status: NSObject {

    ///微博创建时间
    var created_at: String?
    ///微博Id  OC: id是任意对象的关键字
    //Int  NSInteger  在iPhone 5 5c 4s 4 是32
    //Int 64  long long
    var id: Int64 = 0
    
    ///微博信息内容
    var text: String?
    
    ///微博来源
    var source: String?
    //用户 如果不做任何特殊处理 最终会对应上 一个 字典
    var user: User?
    // 配图视图
    var pic_urls: [[String: String]]? {
        didSet {
            // 完成配图视图的数组设置之后 开始给imageURLs赋值 
            // didSet 只需要设置一次  计算型属性 每次都要进行计算
            // 快速判断 urls不为空 并且不为空的 urls的数量不为0 
            if let urls = pic_urls where urls.count != 0 {
                // 实例化属性
imageURLs = [NSURL]()
                for item in urls {
                    
                    let urlString = item["thumbnail_pic"]
                    //强制解包 表示相信后端一定给一个urlString 并且一定可以转化为NSURL格式
                    let imageURL = NSURL(string: urlString!)!
                    // 添加图片url地址
                    imageURLs?.append(imageURL)
                }
            }
        }
    }
    
    // 计算性属性 可以实现 url可I型的转换
    
    var imageURLs: [NSURL]?
    
    
    // 构造方法
    init(dict: [String : AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
        
    }
    
    // 重写KVC赋值方法
    override func setValue(value: AnyObject?, forKey key: String) {
       
            if key == "user" {
                if let dict = value as? [String :AnyObject] {
                    
                  user = User(dict: dict)
                    // return 非常关键 不做这步return 前面的字典转模型 就白做了
                    return
                    
                }
                
            }
            
        super.setValue(value, forKey: key)
    }
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    // 重写对象的描述信息
    override var description: String {
        //  使用kvc方式 获取对象 的 字典信息
        let keys = ["created_at","id","text","source"]
        let dict = self.dictionaryWithValuesForKeys(keys)
        return dict.description
    }

}
